def max_subarray_sum_kadane(nums):
    """
    使用Kadane算法计算最大子数组和
    时间复杂度：O(n)，空间复杂度：O(1)
    """
    if not nums:
        return 0

    max_sum = current_sum = nums[0]

    for i in range(1, len(nums)):
        # 决定是继续扩展当前子数组还是重新开始
        current_sum = max(nums[i], current_sum + nums[i])
        # 更新全局最大值
        max_sum = max(max_sum, current_sum)

    return max_sum